package com.bblocks.common.anti_reptile.constant;

import lombok.Getter;
import lombok.NonNull;

/**
 * <p>Project: bb-anti-reptile - RuleResultEnum</p>
 * <p>描述：锁定类型：1=限流 2=验证码（默认） 3=拉黑,9=纯告警，0=则未锁定</p>
 *
 * @Author Zhao [125043150@qq.com]
 * @Date 2024/3/27 9:38
 * @Version 1.0
 * @since 8
 */
@Getter
public enum RuleResultEnum {
    /**
     * 通过
     */
    PASS(0, "通过",false),
    /**
     * 仅限流
     */
    RATELIMIT(1, "仅限流",false),
    /**
     * 验证码限流（验证码可重置流量）
     */
    RATELIMIT_CAPTCHA(2, "验证码限流",true),
    /**
     *黑名单限流（拉入黑名单）
     */
    RATELIMIT_BLACK(3, "黑名单限流",true),
    /**
     * 告警,超限后进入黑名单-但是还是能进把，也不告警了（仅限全局流量-其他不生效）,也加入黑名单，
     */
    RATELIMIT_ALARM(9, "告警",true),
    ;

    /**
     * 状态:1=限流 2=验证码（默认） 3=拉黑，9=告警，0=则未锁定
     */
    private Integer lockType;
    /**
     * 描述
     */
    private String desc;
    /**
     * 是否进黑名单
     */
    private boolean needBlack;

    private static RuleResultEnum[] results =  RuleResultEnum.values();

    RuleResultEnum(int lockType, String desc,boolean needBlack) {
        this.lockType = lockType;
        this.desc = desc;
        this.needBlack = needBlack;
    }

    public static RuleResultEnum getRuleResult(Integer lockType) {
        if(lockType == null)
            return null;
        for (RuleResultEnum t : results) {
            if (t.getLockType().equals(lockType) ) {
                return t;
            }
        }
        return null;
    }
}
